package server.persistencia;

import server.dominio.Beneficiario;
import server.dominio.Medico;
import server.dominio.Persona;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;










public class DAOBeneficiarioMySQL extends DAOBeneficiario{
	private Agente Broker;
	private Connection Con;
	
	public DAOBeneficiarioMySQL() throws SQLException{
		Broker= Agente.getAgente();
		Con= Broker.getConnection();
	}
	
	@Override
	public int delete(Object beneficiario)throws SQLException{
		// TODO Auto-generated method stub
		PreparedStatement stmt;
		int result= 0;

		
		stmt = Con.prepareStatement("DELETE FROM Persona WHERE idBeneficiario_pk= ?");
		stmt.setInt(1, ((Beneficiario)beneficiario).getIdBeneficiario_pk());
		result= stmt.executeUpdate();
		

		return result;
	}

	@Override
	public int insert(Object obj) throws SQLException{
		Beneficiario aux= (Beneficiario)obj;
		int resul=0;
		
                PreparedStatement stmt = (PreparedStatement) Con.prepareStatement("INSERT INTO Beneficiario(nif, nss, Nombre, Apellidos, Domicilio, Telef_fijo, Telef_Movil, Email, Fecha_Nacimiento, idMedico_fk) VALUES (?,?,?,?,?,?,?,?,?,?)");
      		stmt.setString(1, aux.getNif());
      		stmt.setString(2, aux.getNombre());
       		stmt.setString(3, aux.getApellidos());
		stmt.setString(4, aux.getDomicilio());
		stmt.setInt(5, aux.getTeleFijo());
		stmt.setInt(6, aux.getTeleMovil());
                stmt.setString(7, aux.getEmail());
                stmt.setString(8, aux.getFecha_nacimiento());
                stmt.setInt(9, aux.getMedico().getIdMedico_pk());
		resul= stmt.executeUpdate();
	
		stmt.close(); 
		



		return resul;
	}

	public ArrayList<Object> select(String condicion) throws SQLException{
		ArrayList<Object> beneficiarios = new ArrayList<Object>();
		Statement stmt;
		Persona persona_aux;
		Medico medico_aux;

		DAOMedicoMySQL daoM = new DAOMedicoMySQL();
		stmt = Con.createStatement();
		ResultSet res  = stmt.executeQuery(condicion);
		 while(res.next()){ 
                    //Resultados
                    persona_aux= new Persona(res.getString("nif"), res.getString("nombre"), res.getString("apellidos"), res.getString("domicilio"), res.getInt("telFijo"), res.getInt("telMovil"), res.getString("email"), res.getDate("fecha_nacimiento").toString());
                    medico_aux= (Medico) daoM.find("SELECT * FROM Medico Where idMedico_pk= "+ res.getInt("idMedico_fk"));
                    Beneficiario beneficiario_aux= new Beneficiario(persona_aux, res.getInt("idBeneficiario_pk"), medico_aux, res.getString("nss"));
                    beneficiarios.add(beneficiario_aux);
                 }
		 res.close(); 
		 stmt.close(); 

		 daoM.cerrarDAO();
		
		return beneficiarios;
	}

	@Override
	public int update(Object obj) throws SQLException{
		// TODO Auto-generated method stub
		Beneficiario aux= (Beneficiario)obj;
		int resul=0;


//		Persona p= new Persona(aux.getIdPersona(),aux.getNif(),aux.getNombre(), aux.getApellidos(), aux.getDomicilio(), aux.getTeleFijo(), aux.getTeleMovil(), aux.getEmail(), aux.getFecha_nacimiento());

//		dao.update(p);

                PreparedStatement stmt = Con.prepareStatement("UPDATE Beneficiario SET idMedico_fk= ? WHERE idBeneficiario_pk= ?");
		stmt.setInt(1, aux.getMedico().getIdMedico_pk());
                stmt.setInt(2, aux.getIdBeneficiario_pk());
		resul= stmt.executeUpdate();

		stmt.close();
                return resul;
	}

	@Override
	public Object find(String condicion) throws SQLException{
		Beneficiario bene= null;
		Persona persona;
		Medico medico= null;
		Statement stmt;

	
		DAOMedicoMySQL daoM = new DAOMedicoMySQL();
		stmt = Con.createStatement();
		ResultSet res  = stmt.executeQuery(condicion);
		if(res!= null){

                 }
		 res.close(); 
		 stmt.close(); 
		
		return bene;
	}
	public void cerrarDAO()throws SQLException{
		Con.close();	
	}



}
